package com.dora.basic.juc.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

public class ExecutorExample {

    public static void main(String[] args) {
        //创建一个固定大小的线程池，该线程池可以容纳固定数量的线程。它适用于负载较为稳定的场景，线程数固定。
        ExecutorService executor1 = Executors.newFixedThreadPool(5);

        //创建一个可缓存的线程池。该线程池会根据需要创建新线程，如果某个线程长时间没有被使用，它会被回收。
        ExecutorService executor2 = Executors.newCachedThreadPool();

        //创建一个单线程的线程池，所有任务会按照提交的顺序依次执行。
        ExecutorService executor3 = Executors.newSingleThreadExecutor();

        //创建一个定时任务线程池，支持任务的延迟执行和定期执行。
        ScheduledExecutorService executor4 = Executors.newScheduledThreadPool(5);

        //创建一个工作窃取线程池，线程池会自动调整线程的数量，适用于有多个任务需要并发执行的场景。
        ExecutorService executor5 = Executors.newWorkStealingPool();
    }
}
